/**
 * 文件名：TransferFacadeImpl.java
 *
 * 创建人：Elvin Zhao - 279152260@qq.com
 *
 * 创建时间：2019年1月3日 下午3:59:21
 *
 * 版权所有：FNII
 */
package com.z100h.supplychain.evidence.facade;

import java.util.List;

import org.rribbit.Listener;

import com.z100h.supplychain.core.EvidenceType;
import com.z100h.supplychain.sku.entity.SkuAmount;

/**
 * [描述信息：说明类的基本功能]
 *
 * @author Elvin Zhao - 279152260@qq.com
 * @version 1.0 Created on 2019年1月3日 下午3:59:21
 */
public interface TransferFacade<TransferEvidence> {

	/**
	 * 
	 * 不要和抽象类重名
	 * 
	 * @param resourceIds
	 * @param evidence
	 * @param evidenceType
	 * @return
	 * @throws Throwable
	 * @author: Elvin Zhao - 279152260@qq.com 
	 * @date: Created on 2021年8月25日 上午9:18:54
	 */
	public String transferProcess(final List<String> resourceIds, TransferEvidence evidence, EvidenceType evidenceType)
			throws Throwable;

	/**
	 * 
	 * 创建转库单
	 * 
	 * @param transferEvidence
	 * @return
	 * @author: Elvin Zhao - 279152260@qq.com 
	 * @date: Created on 2021年8月25日 上午9:25:33
	 */
	public void save(TransferEvidence transferEvidence);

	public String save(EvidenceType evidenceType, String warehouseType, List<SkuAmount> list, String comment);

	/**
	 * RR调用
	 * 盘点单
	 * 
	 * @param companyId
	 * @param skuAmountJsonStr
	 * @param remarks
	 * @return
	 * @author: Elvin Zhao - 279152260@qq.com 
	 * @throws Throwable 
	 * @date: Created on 2021年8月23日 下午4:36:30
	 */
	@Listener(hint = "S_C_PROC_CHECK_TRANSFER_SAVE")
	public String saveCheckTransfer(String companyId, String skuAmountJsonStr, String remarks) throws Throwable;

}
